/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package manejadores;

import entidades.Institucion;
import interfaz.Entidad;
import interfaz.Manejador;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import persistencia.Conexion;

/**
 *
 * @author Snailin
 */
public class ManejadorDeInstitucion implements Manejador {

    private Conexion conexion=null;
    private static ManejadorDeInstitucion instancia=null;
    private ResultSet rs=null;
    private PreparedStatement stmt=null;
    private ArrayList<Institucion>instituciones=null;

    public static ManejadorDeInstitucion getInstancia() {
        if(instancia==null){
            instancia=new ManejadorDeInstitucion();
        }
        return instancia;
    }

    private ManejadorDeInstitucion(){
        conexion=Conexion.getInstancia();
    }

    public ArrayList<Institucion>getInstituciones(){
        instituciones=new ArrayList<Institucion>();
        String sql="SELECT * FROM institucion";
        stmt=conexion.hacerEnunciado(sql);
        rs=conexion.hacerConsulta(sql);
        try {
            while (rs.next()) {

                Institucion institucion=new Institucion(rs.getInt(1), rs.getString(2), rs.getString(3),rs.getString(4),rs.getString(5),rs.getString(6), rs.getString(7), rs.getInt(8));
                instituciones.add(institucion);
            }
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeInstitucion.class.getName()).log(Level.SEVERE, null, ex);
        }

        return instituciones;
    }


    public int agregar(Entidad institucion) {
        int fila=0;
        String sql="INSERT INTO institucion (id_institucion, nombre_institucion, representante, telefono, direccion, sector, fecha_fundacion, id_poblacion_beneficiada)VALUES(0, ?, ?, ?, ?, ?, ?, ?)";
        stmt=(PreparedStatement) conexion.hacerEnunciado(sql);
        try {
            stmt.setString(1, ((Institucion)(institucion)).getNombre());
            stmt.setString(2, ((Institucion)(institucion)).getRepresetante());
            stmt.setString(3, ((Institucion)(institucion)).getTelefono());
            stmt.setString(4, ((Institucion)(institucion)).getDireccion());
            stmt.setString(5, ((Institucion)(institucion)).getSector());
            stmt.setString(6, ((Institucion)(institucion)).getFechaFundacion());
            stmt.setInt(7, ((Institucion)(institucion)).getIdPoblacionBeneficiada());
            fila=stmt.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeProyecto.class.getName()).log(Level.SEVERE, null, ex);
        }
       return fila;
    }

    public int eliminar(int id) {
        int fila=0;
        String sql="DELETE FROM institucion WHERE id_institucion = ?";
        stmt=(PreparedStatement) conexion.hacerEnunciado(sql);
        try {
            stmt.setInt(1, id);
            fila=stmt.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeProyecto.class.getName()).log(Level.SEVERE, null, ex);
        }
       return fila;
    }

    public int modificar(Entidad institucion, int id) {
        int fila=0;
        String sql="UPDATE institucion SET nombre_institucion = ? , representante = ?, telefono = ? , direccion = ? , sector = ? , fecha_fundacion = ? , id_poblacion_beneficiada = ? WHERE id_institucion = ?";
        stmt=(PreparedStatement) conexion.hacerEnunciado(sql);
         try {
            stmt.setString(1, ((Institucion)(institucion)).getNombre());
            stmt.setString(2, ((Institucion)(institucion)).getRepresetante());
            stmt.setString(3, ((Institucion)(institucion)).getTelefono());
            stmt.setString(4, ((Institucion)(institucion)).getDireccion());
            stmt.setString(5, ((Institucion)(institucion)).getSector());
            stmt.setString(6, ((Institucion)(institucion)).getFechaFundacion());
            stmt.setInt(7, ((Institucion)(institucion)).getIdPoblacionBeneficiada());
            stmt.setInt(8, ((Institucion)(institucion)).getIdInstitucion());

            fila=stmt.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeProyecto.class.getName()).log(Level.SEVERE, null, ex);
        }
       return fila;
    }

}
